﻿using clasesBase;
using Logica;
using System.Drawing;
using System.Windows.Forms;
using System;
using accesoDatos;

namespace PlanificacionProduccion
{
    public partial class FrmPermisoDet : FrmABM
    {
        public FrmPermisoDet()
        {
            InitializeComponent();
        }

        private void load_Load(object sender, System.EventArgs e)
        {
            datosRoles.DataSource = Rol.listarElementos(Rol.tablaBD);
            if (datosRoles.Count > 0)
            {
                cmbRoles.DisplayMember = "nombre";
                cmbRoles.ValueMember = "id";
            }

            datosFormularios.DataSource = Formulario.listarElementos(Formulario.tablaBD);
            if (datosFormularios.Count > 0)
            {
                cmbFormularios.DisplayMember = "nombreParaUsuario";
                cmbFormularios.ValueMember = "id";
            }

            if (base.idElemento != 0) mostrarDatos();
        }

        private void mostrarDatos()
        {
            Permiso elem = new Permiso(base.idElemento);

            txtId.Text = elem.ID.ToString();
            cmbRoles.SelectedValue = elem.ObjRol.ID;
            cmbFormularios.SelectedValue = elem.ObjFormulario.ID;
        }

        private void btnGuardar_Click(object sender, System.EventArgs e)
        {
            quitarResaltado();
            if (camposCompletos())
            {
                if (Notificador.accionGuardarConfirmada())
                {
                    // Si se tratase de un elemento nuevo, el id correspondiente es 0.
                    int idElemento = txtId.Text.Trim() == "" ? 0 : Convert.ToInt32(txtId.Text);

                    Permiso elem = new Permiso(idElemento);
                    int idRol = cmbRoles.SelectedValue != null ? (int)cmbRoles.SelectedValue : 0;
                    int idFormularios = cmbFormularios.SelectedValue != null ? (int)cmbFormularios.SelectedValue : 0;

                    if (elem.ObjRol.ID != idRol) elem.ObjRol = new Rol(idRol);
                    if (elem.ObjFormulario.ID != idFormularios) elem.ObjFormulario = new Formulario(idFormularios);

                    // Guardo la información
                    string error = elem.guardar();
                    Notificador.resultadoABM(idElemento == 0 ? TipoOperacionABM.ALTA : TipoOperacionABM.MODIFICACION, error);
                    if (error.Trim() == "") this.Close();
                }
            }
            else Notificador.camposNoCompletos();
        }

        private bool camposCompletos()
        {
            bool completos = true;

            if (cmbRoles.SelectedValue == null) { completos = false; lblRol.ForeColor = Color.Red; }
            if (cmbFormularios.SelectedValue == null) { completos = false; lblFormulario.ForeColor = Color.Red; }

            return completos;
        }

        private void quitarResaltado()
        {
            lblRol.ForeColor = Color.Black;
            lblFormulario.ForeColor = Color.Black;
        }
    }
}
